void main(){
  var d=new D();
  d.a();
  d.b();
  d.c();
}
class A{
  void a(){
    print('A.a()');
  }
}
class B{
  //Mixin的类只能继承Object，不能继承别的类
  void b(){
    print('B.b()');
  }
}
class C{
  //作为mixins的类不能有显式的构造方法
  void c(){
    print('C.c()');
  }
}

//mixins:可以实现类似多继承效果，但是必须要先继承一个类
//如果多个类中有相同名称的方法，那么会根据继承顺序后面的覆盖前面的
//使用with连接一个或多个mixin
class D extends A with B,C{
}